<!DOCTYPE HTML PUBLIC "-//ORA//DTD CD HTML 3.2//EN">
<HTML>
<HEAD>
<TITLE>[Chapter 23] 23.2 java.beans.BeanInfo (JDK 1.1)</TITLE>
<META NAME="author" CONTENT="David Flanagan">
<META NAME="date" CONTENT="Thu Jul 31 16:18:22 1997">
<META NAME="form" CONTENT="html">
<META NAME="metadata" CONTENT="dublincore.0.1">
<META NAME="objecttype" CONTENT="book part">
<META NAME="otheragent" CONTENT="gmat dbtohtml">
<META NAME="publisher" CONTENT="O'Reilly &amp; Associates, Inc.">
<META NAME="source" CONTENT="SGML">
<META NAME="subject" CONTENT="Java">
<META NAME="title" CONTENT="Java in a Nutshell">
<META HTTP-EQUIV="Content-Script-Type" CONTENT="text/javascript">
</HEAD>
<body vlink="#551a8b" alink="#ff0000" text="#000000" bgcolor="#FFFFFF" link="#0000ee">

<DIV CLASS=htmlnav>
<H1><a href='index.htm'><IMG SRC="gifs/smbanner.gif"
     ALT="Java in a Nutshell" border=0></a></H1>
<table width=515 border=0 cellpadding=0 cellspacing=0>
<tr>
<td width=172 align=left valign=top><A HREF="ch23_01.htm"><IMG SRC="gifs/txtpreva.gif" ALT="Previous" border=0></A></td>
<td width=171 align=center valign=top><B><FONT FACE="ARIEL,HELVETICA,HELV,SANSERIF" SIZE="-1">Chapter 23<br>The java.beans Package</FONT></B></TD>
<td width=172 align=right valign=top><A HREF="ch23_03.htm"><IMG SRC="gifs/txtnexta.gif" ALT="Next" border=0></A></td>
</tr>
</table>

&nbsp;
<hr align=left width=515>
</DIV>
<DIV CLASS=sect1>
<h2 CLASS=sect1><A CLASS="TITLE" NAME="JNUT2-CH-23-SECT-2">23.2 java.beans.BeanInfo (JDK 1.1)</A></h2>

<DIV CLASS=sect2>
<h3 CLASS=sect2><A CLASS="TITLE" NAME="JNUT2-CH-23-SECT-2.1"></A></h3>
</DIV>

<P CLASS=para>
The <tt CLASS=literal>BeanInfo</tt> interface defines the methods that a
class must implement in order to export information about a
Java bean.  The <tt CLASS=literal>Introspector</tt> class knows how to
obtain all the basic information required about a bean.
A bean that wants to be more "programmer-friendly" may provide
a class that implements this interface, however, in order to
provide additional information about itself (such as an
icon and description strings for each of its properties,
events, and methods).  Note that a bean developer defines a
class that implements the methods of this interface.
Typically only builder applications and similar tools
actually invoke the methods defined here.

<P CLASS=para>
The methods <tt CLASS=literal>getBeanDescriptor()</tt>,
<tt CLASS=literal>getEventSetDescriptors()</tt>,
<tt CLASS=literal>getPropertyDescriptors()</tt>, and
<tt CLASS=literal>getMethodDescriptors()</tt> should return
appropriate descriptor objects for the bean, or
<tt CLASS=literal>null</tt>, if the bean does not provide explicit bean,
event set, property, or method descriptor objects.  The
<tt CLASS=literal>getDefaultEventIndex()</tt> and
<tt CLASS=literal>getDefaultPropertyIndex()</tt> methods return values that
specify the "default" event and property--i.e., that are most likely
to be of interest to a programmer using the bean.  These methods
should return -1 if there are no defaults.

<P CLASS=para>
The <tt CLASS=literal>getIcon()</tt> method should return an image object
suitable for representing the bean in a palette or menu of
available beans.  The argument passed to this method is one
of the four constants defined by the class; it specifies the
type and size of icon requested.  If the requested icon
cannot be provided, <tt CLASS=literal>getIcon()</tt> should return
<tt CLASS=literal>null</tt>.  

<P CLASS=para>
A <tt CLASS=literal>BeanInfo</tt> class is allowed to return
<tt CLASS=literal>null</tt> or -1 if it cannot provide the requested
information.  In this case, the <tt CLASS=literal>Introspector</tt> class
provides basic values for the omitted information from
its own introspection of the bean.  See
<tt CLASS=literal>SimpleBeanInfo</tt> for a trivial implementation of this
interface, suitable for convenient subclassing.

<DIV CLASS=screen>
<P>
<PRE>
public abstract interface <tt CLASS=literal>BeanInfo</tt> {
    // <tt CLASS=literal>Constants</tt>
            public static final int <tt CLASS=literal>ICON_COLOR_16x16</tt>;
            public static final int <tt CLASS=literal>ICON_COLOR_32x32</tt>;
            public static final int <tt CLASS=literal>ICON_MONO_16x16</tt>;
            public static final int <tt CLASS=literal>ICON_MONO_32x32</tt>;
    // <tt CLASS=literal>Public Instance Methods</tt>
            public abstract BeanInfo[] <tt CLASS=literal>getAdditionalBeanInfo</tt>();
            public abstract BeanDescriptor <tt CLASS=literal>getBeanDescriptor</tt>();
            public abstract int <tt CLASS=literal>getDefaultEventIndex</tt>();
            public abstract int <tt CLASS=literal>getDefaultPropertyIndex</tt>();
            public abstract EventSetDescriptor[] <tt CLASS=literal>getEventSetDescriptors</tt>();
            public abstract Image <tt CLASS=literal>getIcon</tt>(int <tt CLASS=literal>iconKind</tt>);
            public abstract MethodDescriptor[] <tt CLASS=literal>getMethodDescriptors</tt>();
            public abstract PropertyDescriptor[] <tt CLASS=literal>getPropertyDescriptors</tt>();
}
</PRE>
</DIV>

</DIV>

<DIV CLASS=sect2>
<h3 CLASS=sect2><A CLASS="TITLE" NAME="JNUT2-CH-23-SECT-2.2">Implemented By:</A></h3>

<P CLASS=para>
SimpleBeanInfo

</DIV>

<DIV CLASS=sect2>
<h3 CLASS=sect2><A CLASS="TITLE" NAME="JNUT2-CH-23-SECT-2.3">Returned By:</A></h3>

<P CLASS=para>
BeanInfo.getAdditionalBeanInfo(), 
Introspector.getBeanInfo(), 
SimpleBeanInfo.getAdditionalBeanInfo()

</DIV>

</DIV>


<DIV CLASS=htmlnav>

<P>
<HR align=left width=515>
<table width=515 border=0 cellpadding=0 cellspacing=0>
<tr>
<td width=172 align=left valign=top><A HREF="ch23_01.htm"><IMG SRC="gifs/txtpreva.gif" ALT="Previous" border=0></A></td>
<td width=171 align=center valign=top><a href="index.htm"><img src='gifs/txthome.gif' border=0 alt='Home'></a></td>
<td width=172 align=right valign=top><A HREF="ch23_03.htm"><IMG SRC="gifs/txtnexta.gif" ALT="Next" border=0></A></td>
</tr>
<tr>
<td width=172 align=left valign=top>java.beans.BeanDescriptor (JDK 1.1)</td>
<td width=171 align=center valign=top><a href="index/idx_0.htm"><img src='gifs/index.gif' alt='Book Index' border=0></a></td>
<td width=172 align=right valign=top>java.beans.Beans (JDK 1.1)</td>
</tr>
</table>
<hr align=left width=515>

<IMG SRC="gifs/smnavbar.gif" USEMAP="#map" BORDER=0> 
<MAP NAME="map"> 
<AREA SHAPE=RECT COORDS="0,0,108,15" HREF="../javanut/index.htm"
alt="Java in a Nutshell"> 
<AREA SHAPE=RECT COORDS="109,0,200,15" HREF="../langref/index.htm" 
alt="Java Language Reference"> 
<AREA SHAPE=RECT COORDS="203,0,290,15" HREF="../awt/index.htm" 
alt="Java AWT"> 
<AREA SHAPE=RECT COORDS="291,0,419,15" HREF="../fclass/index.htm" 
alt="Java Fundamental Classes"> 
<AREA SHAPE=RECT COORDS="421,0,514,15" HREF="../exp/index.htm" 
alt="Exploring Java"> 
</MAP>
</DIV>

</BODY>
</HTML>
